package com.lagou.StageOne;

import java.util.Arrays;
import java.util.Scanner;

public class Assignment4 {

    /**
     * 4. 编程题 自定义数组扩容规则，当已存储元素数量达到总容量的 80%时，扩容 1.5 倍。 例如，总容量是 10，当输入第 8 个元素时，数组进行扩容，容量从 10 变 15。
     * @param args
     */

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        //初始化 一个数组 长度为5
        int [] arrays = new int[10];
        //临时存放数据数组
        int[] newArrays = new int[0];
        System.out.println("开始arrays的长度为:"+arrays.length);
        System.out.println("输入Q退出输入");
        //循环输入数字 ，存进数组
        for (int i=0;i< arrays.length;i++){
            System.out.print("请输入第"+(i+1)+"个数字:");
            //获取输入变量
            String str = input.next();
            //判断是否等于退出标识
            if ("Q".equalsIgnoreCase(str)){
                System.out.println("结束输入");
                break;
            }
            //将输入的值类型转换
            Integer num = Integer.valueOf(str);
            //判断此时存放数组的下标是否大于80%
            int digital = (int) (arrays.length*0.8);
            //减1是 是 数组的下标到长度-1 也就是长度-1的80%扩容
            if ((digital-1)==i){
                //如果下标i=该数组的80%则 将内容复制到临时数组，并定义临时数组的长度
                 newArrays= Arrays.copyOf(arrays, arrays.length);
                 //将旧数组 重新初始化
                 arrays  = new int[0];
                 //将临时数组中数据重新复制到 旧数组 并初始化长度*1.5
                 arrays = Arrays.copyOf(newArrays, (int) (newArrays.length*1.5));
                 //此时 旧数组 长度已经改变
                arrays[i]=num;
            }
            //未达到80% 在此存放数据
            arrays[i]=num;
            System.out.println("输入第"+(i+1)+"个数字后数组的长度为:"+arrays.length);

        }


    }
}
